package classes;

/**
 * A classe Pessoa representa uma pessoa com nome, idade, sexo, cpf, rg e endereco.
 * 
 * @author samuel santos
 *
 */
public class Pessoa {
	private String nome;
	private int idade;
	private String sexo;
	private String cpf;
	private String rg;
	private Endereco endereco;
	
	
	/**
	 * Constroi uma pessoa com nome, idade, sexo, cpf, rg, endereco...
	 *  
	 * @param nome	Uma string contendo o nome de uma pessoa.
	 * @param idade	Um int representando uma idade.
	 * @param sexo	Um string representando o sexo.
	 * @param cpf	Uma string representando o cpf.
	 * @param rg	Uma string representando o rg.
	 * @param endereco	Um objeto do tipo Endereco.
	 */
	public Pessoa (String nome, int idade, String sexo, String cpf , String rg, Endereco endereco ) throws Exception {

		if ( nome == null || nome.equals("") ){
			throw new Exception("Nome invalido!");
		}
		
		if (  idade <= 0 || idade > 150 ){
			throw new Exception( "Idade invalida!");
		}
		
		
		if  ( sexo == null || sexo.equals("") ){
			throw new Exception ("Sexo invalido!");
		}
		
		if ( cpf == null || cpf.equals("") ){
			throw new Exception ("Cpf invalido!");
		}
		
		if ( rg == null || rg.equals("") ){
			throw new Exception ("Rg invalido!");
		}
		
		if ( endereco == null ){
			throw new Exception ("Endereco invalido!");
		}
		
		this.nome = nome;
		this.idade = idade;
		this.sexo = sexo;
		this.cpf = cpf;
		this.rg =rg;
		this.endereco = endereco;
	}
	
	/**
	 * Constroi uma pessoa com nome e idade.
	 * @param nome	uma string com o nome de uma pessoa.
	 * @param idade	Uma string com uma idade.
	 */
	public Pessoa ( String nome , int idade ){
		this.nome = nome;
		this.idade = idade;
	}
	
	/**
	 * Controi uma pessoa com nome e cpf.
	 * @param nome	Uma string representando o  nome de uma pessoa.
	 * @param cpf		Uma string representando o cpf da pessoa.
	 */
	public Pessoa ( String nome , String cpf ){
		this.nome = nome;
		this.cpf = cpf;
	}
	/**
	 * Default
	 */
	public Pessoa(){
		
	}
	
	/**
	 * Obter o nome de uma pessoa.
	 * @return	Uma string com o nome.
	 */
	public String getNome() {
		return nome;
	}
	
	/**
	 * Alterar o nome de uma pessoa.
	 * @param nome	Uma string com um novo nome.
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	/**
	 * Obter a idade de uma pessoa.
	 * @return	Um int representando a idade.
	 */
	public int getIdade() {
		return idade;
	}
	
	
	/**
	 * Alterar a idade de uma pessoa
	 * @param idade	Um int com uma idade.
	 */
	public void setIdade(int idade) {
		this.idade = idade;
	}
	
	/**
	 * Obter o sexo da pessoa.
	 * @return	Uma string com o sexo da pessoa.
	 */
	public String getSexo() {
		return sexo;
	}
	
	
	/**
	 * Alterar o sexo da pessoa.
	 * @param sexo	Uma string com sexo da pessoa.
	 */
	public void setSexo(String sexo) {
		this.sexo = sexo;
	}
	
	/**
	 * Obter o cpf.
	 * @return	Uma string com o cpf.
	 */
	public String getCpf() {
		return cpf;
	}
	
	/**
	 * Alterar o cpf.
	 * @param cpf	Uma string com o cpf.
	 */
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	
	
	/**
	 * Obter o rg.
	 * @return	Uma string com o rg.
	 */
	public String getRg() {
		return rg;
	}
	
	/**
	 * Alterar o rg.
	 * @param rg	Uma string representando o rg.
	 */
	public void setRg(String rg) {
		this.rg = rg;
	}
	
	/**
	 * Obter o endereco da pessoa.
	 * @return	Um objeto do tipo Endereco.
	 */
	public Endereco getEndereco() {
		return endereco;
	}
	
	/**
	 * Alterar o endereco.
	 * @param endereco	Um objeto do tipo endereco.
	 */
	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}
	
	/**
	 * Mostrar os dados de uma pessoa.
	 * @return	Uma string com os dado da pessoa.
	 */
	public String toString(){
		return "Nome: " + getNome() +
				"\nIdade: " + getIdade() +
				"\nSexo: " + getSexo() + 
				"\nCPF: " + getCpf() +
				"\nRG: " + getRg() + 
				"\nEndereco  " +  getEndereco().toString();
	}
	
}//fim da classe Pessoa...
